home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / misc / sci / lpdemo101.lha / LogicPlot / LogicPlot.doc < prev    next >
Text File  |  1992-12-09  |  23KB  |  563 lines

  1. ----------------------------------------------------------------------------------
  2. Introduction "LogicPlot/Introduction"
  3. ----------------------------------------------------------------------------------
  4.  
  5.                                 LogicPlot v1.01
  6.  
  7.                                Copyright ©  1992
  8.                               All Rights Reserved
  9.                                    Written by
  10.                               Cyrus Michael Sanii
  11.  
  12. LogicPlot is a digital logic simulator program.  With it, you can design a 
  13. digital circuit using various logic components.  After designing the circuit 
  14. you can apply various inputs to the nodes of the circuit.  LogicPlot will 
  15. then simulate the circuit and plot the outputs of the selected nodes.
  16.  
  17. Currently the following logic gates are supported:
  18.  
  19. a) 2 input AND
  20. b) 3 input AND
  21. c) 2 input NAND
  22. d) 3 input NAND
  23. e) 2 input OR
  24. f) 3 input OR
  25. g) 2 input NOR
  26. h) 3 input NOR
  27. i) 2 input XOR 
  28. j) inverter
  29. k) buffer
  30. l) Half Adder
  31. m) Full Adder
  32. n) RS flip-flop
  33. o) Clocked RS flip-flop
  34. p) D(data) flip-flop
  35. q) JK flip-flop
  36. r) T(toggle) flip-flop
  37.  
  38. In addition to this you can define your own gates and your own clocks
  39.  
  40. ----------------------------------------------------------------------------------
  41. Requirements "LogicPlot/Requirements"
  42. ----------------------------------------------------------------------------------
  43.  
  44.                                 REQUIREMENTS
  45.                                 ============      
  46. a) AmigaOS 2.04(or greater)
  47.  
  48. b) 512Kb free memory is more than enough to run either the demo version or 
  49.    the release version.  The demo version has a 10 node maximum, and allows 
  50.    up to 5 user defined gates. 
  51.    
  52.    For the release version, a maximum of 50 nodes is allowed and up to
  53.    25 user defined gates.
  54.  
  55. c) MEMACS installed in the System:Tools directory in order to be able to
  56.    invoke the editor from LogicPlot(Otherwise you will have to use another
  57.    editor which saves files in straight text format..ie. no "funny" characters)
  58.  
  59. d) AmigaGuide installed in the System:Utilities directory in order to 
  60.    access the online help system(If you do not have AmigaGuide you can 
  61.    double-click on the LogicPlot.doc file to open a MORE window) 
  62.    
  63.  
  64.  
  65.  
  66. ----------------------------------------------------------------------------------
  67. Installation "LogicPlot/Installation"
  68. ----------------------------------------------------------------------------------
  69.  
  70.                                Installation
  71.                                ============
  72.  
  73. Copy all the files from the LogicPlot disk onto your Harddrive or make a 
  74. duplicate of the LogicPlot disk.  DO NOT use the original disk for 
  75. simulations.  You should always make a backup of your original disks, store 
  76. the originals in a safe place and use the backups for working with.  
  77.  
  78. Harddrive Installation
  79. ----------------------
  80. 1) Place the LogicPlot disk in a floppy drive
  81. 2) When the disk icon appears double-click on it with the left-mouse button
  82. 3) Grab the LogicPlot drawer by holding down the left-mouse button while the 
  83.    mouse pointer is on the LogicPlot drawer.  While holding the mouse button 
  84.    down drag the drawer to the harddisk you want to install LogicPlot on.  
  85.    After you let go of the mouse button the LogicPlot files will be copied 
  86.    to your harddrive.
  87. 4) Ensure you have T: assigned to a disk.  For faster simulations assign T: 
  88.    to the RAM disk.(ie. assign T: RAM:)  This should be placed in your
  89.    S:User-Startup file.
  90.  
  91. Floppy Installation(You will need a single blank disk for this)
  92. -------------------
  93. 1) Place the LogicPlot disk in a floppy drive
  94. 2) When the disk icon appears single-click on it with the left-mouse button
  95.    to select it
  96. 3) Move the mouse pointer to the top of the scren.
  97. 4) By holding the right-mouse button down near the top of the screen you 
  98.    should get a pulldown menu.  By selecting "COPY" a copy of the LogicPlot 
  99.    disk will be made.
  100. 5) Ensure you have T: assigned to a disk.  For faster simulations assign T: 
  101.    to the RAM disk.(ie assign T: RAM:)  This should be placed in your
  102.    S:User-Startup file.
  103.  
  104. Please refer to the AmigaDOS manuals for more information on how to make 
  105. disk backups and on the ASSIGN command.
  106.  
  107. ----------------------------------------------------------------------------------
  108. FilesInDistribution "LogicPlot/FilesInDistribution"
  109. ----------------------------------------------------------------------------------
  110.  
  111.                            FILES IN DISTRIBUTION
  112.                            =====================
  113.                            
  114.       LogicPlot - the program, DO NOT modify this file 
  115. LogicPlot.guide - AmigaGuide Help/Documentation for LogicPlot
  116. LogicPlot.doc   - Normal Text file Help/Documentation for LogicPlot
  117.          CLOCKS - you may put user defined clock information in this file
  118.        GATEDEFS - you may put user defined gate definition information in 
  119.                   this file
  120.        Example1 - An example of a circuit using NAND and AND gates
  121.        Example2 - An example of a circuit using an RS flip-flop
  122.     Example.pic - Schematic diagram of Example1 and Example2 circuits
  123.         History - Text file with revision history of LogicPlot
  124.  
  125. ----------------------------------------------------------------------------------
  126. Usage "LogicPlot/Usage"
  127. ----------------------------------------------------------------------------------
  128.  
  129.                                    Usage
  130.                                    =====
  131.  
  132. The steps involved in using LogicPlot are:
  133.  
  134. 1) Start LogicPlot by either:
  135.  
  136.    a) typing LogicPlot in a CLI 
  137. OR b) double-clicking with the mouse on the LogicPlot icon 
  138.  
  139. 2) Pick a screen mode by selecting the mode you want with the mouse and
  140.    then use View Mode to switch to that screen mode, after switching to
  141.    the mode you want select "Screen Mode OK"
  142.  
  143. 3) The screen should now clear.  You can use the menu options to either:
  144.  
  145.    a) select a previously made data file (menu option "Pick Data File")
  146. OR b) create/edit a data file (menu option "Edit Data File")
  147.  
  148. NOTE: Currently the editor that will start up is MEMACS.  
  149.       Remember to save your file changes before exiting MEMACS.
  150.  
  151. 4) Use the Configure option from the menu so that LogicPlot will be 
  152.    configured the way you want.  Use the mouse to move the "sliders"
  153.    to the values you want.  Select "DONE" when finished configuring.
  154.  
  155. 5) Select simulate from the pull down menu to run the simulation
  156.    The simulation should run and the outputs of the nodes you specified
  157.    will be plotted on the screen
  158.  
  159. ----------------------------------------------------------------------------------
  160. Example1 "LogicPlot/Example#1"
  161. ----------------------------------------------------------------------------------
  162.  
  163.                                  Example #1
  164.                                  ==========
  165.  
  166. 1) Start LogicPlot by either:
  167.  
  168.    a) typing LogicPlot in a CLI
  169. OR b) double-clicking with the mouse on the LogicPlot icon 
  170.  
  171.    A new screen should appear with the name LogicPlot in the upper-lefthand 
  172.    corner and the screen-to-back icon in the upper-righthand corner
  173.  
  174. 2) You can now pick the screen mode you want to use for LogicPlot by clicking 
  175.    on the mode you want with the left-mouse button and then click on the 
  176.    "VIEW MODE" button or use the menu option "VIEW MODE" to switch to that 
  177.    screen mode.  If you do not like the mode you selected you may repeat this 
  178.    process again.  Once you are satisfied with the screen mode click on the 
  179.    "SCREEN MODE OK" button or use the same option from the pull down menus.  
  180.    The screen will then clear and only "LogicPlot" will appear in the 
  181.    upper-lefthand corner of the screen with the screen-to-back icon in the 
  182.    upper-righthand corner.
  183.  
  184. 3) If you press the right-mouse button with the mouse pointer on the word
  185.    LogicPlot a pulldown menu should appear with the options:
  186.    
  187.    Project        <----menu title
  188.    Pick Data File <----loads a circuit file, simulates and plots the 
  189.                        specified outputs
  190.    Edit Data File <----loads the datafile in MEMACS so you can edit it
  191.    Configure      <----lets you configure the LogicPlot program 
  192.    Simulate       <----Simulates your circuit
  193.    Help           <----gives simple help
  194.    About          <----info on version number, date released, author
  195.    Quit           <----exits the LogicPlot program
  196.  
  197. 4) Select "Edit Data File"
  198.    Memacs should start up. Now type in the following into the MEMACS editor 
  199.    exactly as it appears below.(Note: This is the Example1 file on disk)
  200.  
  201. NAND2  0  1  2
  202. NAND2  3  4  5
  203. NAND2  6  7  8 
  204. AND3   2  5  8  9
  205. CLOCK  0  0
  206. CLOCK  1  1
  207. CLOCK  3  3
  208. CLOCK  4  4
  209. CLOCK  5  6
  210. CLOCK  3  7
  211. LABEL  4 hi
  212. LABEL  7 goodbye
  213. SET    2  1
  214. SET    8  1
  215. PLOT   0
  216. PLOT   1
  217. PLOT   2
  218. PLOT   3
  219. PLOT   4
  220. PLOT   5
  221. PLOT   6
  222. PLOT   7
  223. PLOT   8
  224. PLOT   9
  225.  
  226. 5) Save the file to your work disk
  227.  
  228. 6) Now select the Configure option from the menu
  229.    A small window should appear in the center of your screen with various 
  230.    options you can set.  To move the sliders merely place your mouse pointer 
  231.    over the black scroll bar and press the left mousebutton to grab the slider.
  232.    You can then move the mouse(while holding the left button down) to set the 
  233.    slider's value.  Once the slider is at the value you want release the left 
  234.    mousebutton.
  235.    
  236.    When finished setting the configuration, press the left mousebutton while 
  237.    the mouse pointer is on the DONE button.  The small window should then 
  238.    disappear.
  239.    
  240. 7) Select the menu again by holding the right-mouse button and select the 
  241.    "Pick Data File" option.  A file requester will appear on the screen.  You 
  242.    can then pick the file you saved the data to.  After picking the file and 
  243.    selecting "OK" the file will be loaded and the simulation will begin.  A 
  244.    small STATUS window will appear on screen showing you how much of the 
  245.    simulation is left to be calculated.  Once the simulation has been 
  246.    calculated, the selected nodes will be plotted.
  247.    
  248.    Once you have simulated the circuit you can alter the configuration values
  249.    and simulate the circuit again.         
  250.  
  251. NOTE: When entering node numbers for a circuit please ensure that the lower 
  252.       node numbers are closer to the inputs rather than the outputs of the 
  253.       circuit.  I have implemented a crude sorting function, so you may get 
  254.       different results if you number the nodes the other way around and 
  255.       configure LogicPlot to have a low number of gate delays per clock cycle.
  256.  
  257. ----------------------------------------------------------------------------------
  258. Example2 "LogicPlot/Example2"
  259. ----------------------------------------------------------------------------------
  260.  
  261.                                  Example#2
  262.                                  =========
  263.                                  
  264. This is just an example of how to to use a flip-flop in a circuit.  You can
  265. follow the same procedures as in Example#1.  A data file should be created 
  266. with the information below in it.(Note: This is Example2 on disk)
  267.  
  268. RSFF  0 1 2 3
  269. CLOCK 0 0
  270. CLOCK 1 1
  271. PLOT  0
  272. PLOT  1
  273. PLOT  2
  274. PLOT  3
  275. LABEL 0 R
  276. LABEL 1 S
  277. LABEL 2 Output
  278. LABEL 3 NOT_Output
  279.  
  280. This will simulate a RS-type flip-flop with node#0 being R and node#1 being S.
  281. The normal output will be on node#2 and the inverted output on node#3.  In 
  282. the simulation you will notice that when both R and S are both low the plot
  283. has a solid region.  This is to show that an error has occurred, as having
  284. both R and S low is not allowed on RS flip-flops. 
  285.  
  286. ----------------------------------------------------------------------------------
  287. GatesSupported "LogicPlot/GatesSupported"
  288. ----------------------------------------------------------------------------------
  289.                                 Gates Supported
  290.                                 ===============
  291.  
  292. GATENAME   DESCRIPTION
  293. ========   ===========
  294. AND2       2 input  AND gate              
  295. NAND2      2 input NAND gate
  296. OR2        2 input   OR gate              
  297. NOR2       2 input  NOR gate
  298. XOR2       2 input  XOR gate
  299. INV        an inverter
  300. BUF        a buffer
  301. AND3       3 input  AND gate              
  302. NAND3      3 input NAND gate
  303. OR3        3 input   OR gate              
  304. NOR3       3 input  NOR gate
  305. HADDER     Half Adder                  Input1=A       Output1=Sum 
  306.                                        Input2=B       Output2=CarryOut
  307. FADDER     Full Adder                  Input1=A       Output1=Sum
  308.                                        Input2=B       Output2=CarryOut
  309.                                        Input3=Carryin
  310. RSFF       RS type flip-flop           Input1=R       Output1=Output
  311.                                        Input2=S       Output2=NOT(Output)
  312. CRSFF      Clocked RS type flip-flop   Input1=Clock   Output1=Output
  313.                                        Input2=R       Output2=NOT(Output)
  314.                                        Input3=S
  315. DFF        D(data) type flip-flop      Input1=Clock   Output1=Output
  316.                                        Input2=Data    Output2=NOT(Output)
  317. JKFF       JK type flip-flop           Input1=Clock   Output1=Output
  318.                                        Input2=J       Output2=NOT(Output)
  319.                                        Input3=K
  320. TFF        T(toggle) type flip-flop    Input1=T       Output1=Output
  321.                                                       Output2=NOT(Output)
  322.  
  323. In addition to this you can define your own gates and your own clocks
  324.  
  325. ----------------------------------------------------------------------------------
  326. OtherCommands "LogicPlot/OtherCommands"
  327. ----------------------------------------------------------------------------------
  328.  
  329.                                 Other Commands
  330.                                 ==============
  331.  
  332. CLOCK - used in the data file to specify which clock you want to apply 
  333.         as an input to a node
  334.         
  335.         Eg.  Apply CLOCK0 to Node#1
  336.          
  337.              CLOCK 0 1 
  338.         
  339. LABEL - used to put a label on the output plots for the specified node
  340.  
  341.         Eg.  Give Node#4 a label of "WOW"
  342.         
  343.              LABEL 4 WOW
  344.         
  345. SET   - used to set an initial logic value for a node
  346.  
  347.         Eg.  Set the initial logic value of Node#3 to high(TRUE,1)
  348.         
  349.              SET 3 1              
  350.           
  351. PLOT  - tells LogicPlot to plot the logic values of the specified node 
  352.    
  353.         Eg.  Plot the logic values of node#4
  354.         
  355.              PLOT 4
  356.  
  357. ----------------------------------------------------------------------------------
  358. CreatingCustomClocks "LogicPlot/CreatingCustomClocks"
  359. ----------------------------------------------------------------------------------
  360.                             Creating Custom Clocks
  361.                             ======================
  362.                                
  363. You can create your own custom clocks by using the following steps:
  364. 1) Run your favorite editor(It must save in standard ASCII format)
  365. 2) Load the CLOCKS file into the editor.  It should look something 
  366.    similar to this:
  367.  
  368. 0101010101010101010101010101010101010101010101010101010101010101
  369. 0011001100110011001100110011001100110011001100110011001100110011
  370. 0000111100001111000011110000111100001111000011110000111100001111
  371. 0000000011111111000000001111111100000000111111110000000011111111
  372. 0000000000000000111111111111111100000000000000001111111111111111
  373. 0000000000000000000000000000000011111111111111111111111111111111
  374.  
  375. The above information is for CLOCK0-CLOCK5
  376. The first line in the data file defines CLOCK6
  377. The second line in the data file defines CLOCK7
  378. ....
  379. The Nth line in the data file defines CLOCK(N+5)
  380.  
  381.  
  382. 3) The CLOCKS file stores the data for 32 clock cycles(which is the 
  383.    equivalent to 64 time periods) for each defined CLOCK#.  To create  your 
  384.    custom clock, add your data on a new line in the CLOCKS file.  For each 
  385.    clock you create you MUST enter 64 logic values(in some combination of 
  386.    0's and/or 1's)
  387.    
  388.    For example CLOCK0 will be 0 initially and then it will be 1 after 
  389.    one time period.  It will then return back to 0 after the second 
  390.    time period.  It is thus alternating logic values each time period.
  391.    
  392.    CLOCK1 will be 0 initially and will stay 0 until 2 time periods have 
  393.    passed.  It will then change value to 1 and stay that value for 2 
  394.    time periods.  CLOCK1 thus alternates logic values every 2 time periods. 
  395.  
  396. ***NOTE: One clock cycle = 2 time periods
  397.  
  398. ----------------------------------------------------------------------------------
  399. CreatingCustomGates "LogicPlot/CreatingCustomGates"
  400. ----------------------------------------------------------------------------------
  401.                               Creating Custom Gates
  402.                               =====================
  403.                               
  404. You can create your own custom gates by using the following steps:
  405. 1) Run your favorite editor(It must save in standard ASCII format)
  406. 2) Load the GATEDEFS file into the editor.  It should look something 
  407.    similar to this:
  408.    
  409. AND5   5 1 0
  410. ^^^^^  ^ ^ ^
  411. |||||  | | ------1 only if the gate needs a clock pulse to change values
  412. |||||  | |
  413. |||||  | --------the number of output pins this gate has 
  414. |||||  |
  415. |||||  ----------the number of input pins this gate has
  416. |||||
  417. -----------------the gate name(maximum length is 10 characters)
  418.   
  419.    Add your Gate name to the end of the file along with the appropriate
  420.    numbers for the input pins, output pins and the indicator for
  421.    whether this gate needs a clock or not.
  422.  
  423.    The next line in the file will look something similar to the line 
  424.    below:  
  425.  
  426. 0000100001000010000100001000010000100001000010000100001000010000
  427.  
  428.    This line stores the data for 32 clock cycles(which is the equivalent 
  429.    to 64 time periods) for each defined gate.  To create your custom 
  430.    gate, add your data on a new line in the OUTPUTS file.  For each 
  431.    gate you create you MUST enter 64 logic values for each output pin(in 
  432.    some combination of 0's, 1's, 2's, 3's, 4's or 5's)
  433.    
  434.    0-represents a logic 0
  435.    1-represents a logic 1
  436.    2-represents no change from the previous logic value
  437.    3-represents toggle the logic value(ie. value=NOT(current value)
  438.    4-represents an error condition
  439.    5-represents that the output on this pin is the inverse of the output
  440.      on the first output pin of this gate
  441.      
  442. These numbers are a representation of the logic table for the gate.
  443.  
  444. Example 1: 2 input AND gate(AND2) with 1 output pin
  445.            Does NOT require a clock pulse
  446.  
  447. Logic Table
  448. ===========
  449. INPUT0 INPUT1 OUTPUT1
  450. =====================
  451.    0      0      0
  452.    1      0      0
  453.    0      1      0
  454.    1      1      1
  455.  
  456. This logic table describes the outputs for all possible input combinations.
  457. You now repeat the OUTPUT1 values over and over until there are 64 entries
  458. on the line.  You can now define an AND2 gate with the following 2 lines:
  459.    
  460. AND2 2 1 0   
  461. 0001000100010001000100010001000100010001000100010001000100010001 
  462.  
  463. =========================================================================
  464.  
  465. Example 2: Clocked RS Flip-Flop(CRSFF)
  466.            INPUT1=CLOCK, INPUT2=R, INPUT3=S, OUPUT1=Q, OUTPUT2=NOT(Q)
  467.            Requires a clock pulse             
  468.  
  469. Logic Table
  470. ===========
  471. INPUT1 INPUT2 INPUT3 OUTPUT1 OUTPUT2
  472. ====================================
  473.    0      0      0      0       1  
  474.    1      0      0      0       1   
  475.    0      1      0      0       1
  476.    1      1      0      1       0  
  477.    0      0      1      0       1   
  478.    1      0      1      1       0   
  479.    0      1      1      1       0   
  480.    1      1      1      1       0  
  481.  
  482. So to define this gate you would first take the OUTPUT1 values and repeat
  483. them so there are 64 values and put that on one line of the OUTPUTS file.
  484. On the next line of the OUTPUTS file you would repeat the OUTPUT2 values.
  485. Actually since the OUTPUT2 values are always the inverse of the OUTPUT1
  486. values you could just have 5's across the whole 64 values.
  487.  
  488. So you could define the CRSFF with the following 3 lines: 
  489.  
  490. CRSFF 3 2 1
  491. 0001011100010111000101110001011100010111000101110001011100010111
  492. 1110001011100010111000101110001011100010111000101110001011101000
  493.  
  494. OR with the following 3 lines:
  495.  
  496. CRSFF 3 2 1
  497. 0001011100010111000101110001011100010111000101110001011100010111
  498. 5555555555555555555555555555555555555555555555555555555555555555
  499.  
  500. ==========================================================================
  501. ***NOTE: One clock cycle = 2 time periods                              
  502. ***NOTE: Input0 is the only input that can require a clock pulse input
  503.  
  504. ----------------------------------------------------------------------------------
  505. Limitations "LogicPlot/Limitations"
  506. ----------------------------------------------------------------------------------
  507.                                   Limitations
  508.                                   ===========
  509.  
  510. -Maximum length of a gate name is 10 characters
  511. -Maximum number of clock cycles to simulate for is 32
  512. -Maximum number of inputs for a user defined gate is 6
  513. -Each gate can require at MOST one clock input(up to 5 other inputs allowed)
  514. -The first command in a data file MUST NOT be a user-defined gate
  515.  
  516.                                                           Demo      Release
  517.                                                          Version    Version
  518.                                                          =======    =======
  519. Maximum number of gates that can be user defined:           5         25 
  520. Maximum number of clocks that can be user defined:         10         20
  521. Maximum number of nodes:                                   10         50
  522. Maximum number of gates+clocks:                            10         50
  523.  
  524. ----------------------------------------------------------------------------------
  525. Disclaimer "LogicPlot/Disclaimer and Author Info"
  526. ----------------------------------------------------------------------------------
  527.                              LogicPlot Information
  528.                              =====================
  529.  
  530. LogicPlot Copyright © 1992 Cyrus Michael Sanii, All Rights Reserved.  
  531.  
  532. The DEMO version is freely distributable as long as all of its files are 
  533. included in their original form without additions, deletions, or 
  534. modifications of any kind, and only a nominal fee can be charged for its 
  535. distribution. This software is provided "AS IS" without warranty of any 
  536. kind, either expressed or implied. By using LogicPlot, you agree to accept 
  537. the entire risk as to the quality and performance of the program.  
  538.  
  539. The release version IS NOT freely distributable in ANY form or manner.
  540.  
  541. Please send your comments, wishes, and bug reports for LogicPlot to:
  542.  
  543.                                Cyrus Michael Sanii
  544.                                19-1404 Rosenthal Avenue
  545.                                Ottawa, Ontario
  546.                                Canada
  547.                                K1Z 8H9
  548.     
  549. Remember to state the version number you are using, in all correspondence.
  550.  
  551. ----------------------------------------------------------------------------------
  552. HowToPurchaseTheReleaseVersion "LogicPlot/How To Purchase the Release Version"
  553. ----------------------------------------------------------------------------------
  554.  
  555. To purchase the release version of LogicPlot send a cheque or money 
  556. order for $50 Canadian to:
  557.  
  558.                                Cyrus Michael Sanii
  559.                                19-1404 Rosenthal Avenue
  560.                                Ottawa, Ontario
  561.                                Canada
  562.                                K1Z 8H9 
  563.